Entering index codes in MicroSoft Word is awkward because its search mechanism lacks full regular expression support and query-insert mode is unavailable. To mark one piece of text as an index entry, an ordinary session requires 8 mouse clicks and 4 keystrokes. Even with accelerated keyboard abbreviations, it still takes 2 mouse clicks and 8 keystrokes to mark a single index entry. The premise, however, is that the index pattern has been located and that it is identical to the index key. Locating the pattern may involve extra mouse clicks and keystrokes. Moreover, if the index key and the search pattern are distinct, more keystrokes would be necessary to enter the text for the index key. This situation happens to the marking of each and every instance of index entries. No global scheme is available in MicroSoft Word.
Ventura Publisher does not support any searching mechanism; it assumes searching is performed in a front-end word processor. Therefore, systematic index placing in the stand-alone Ventura Publisher is difficult.
The situation in FrameMaker is somewhat better because of its more powerful keyboard macro registration capability and the support for regular expression search. In FrameMaker, a specific combination of tools can be used to enter index tags at desired places. Operations can be recorded as keyboard macros so that repetitions can be done by a single keystroke (the invocation of the keyboard macro). The problem is that a new keyboard macro has to be defined for each key-pattern pair. Furthermore, it lacks the systematic global scheme available in our extended framework to make the whole process efficient.
In our system, it takes only 1 to 3 keystrokes to mark an index entry. Also available is a global scheme for marking index entries in the entire document that may span over multiple files. In the single key-pattern case, the same key can be inserted at a variety of places described by a single regular expression. Patterns already indexed are skipped automatically. A number of options are available upon each occurrence of the pattern. Thus, marking each instance takes just one keystroke to confirm and it works uniformly and continuously throughout the entire document. This can be expanded to a scheme of multiple key-pattern pairs that works iteratively on a list of different index entries. In our system, a significant amount of time is saved not just in typing per se, but in the user's mental reaction time due to the side effect of unautomated discrete repetitions as in FrameMaker, MicroSoft Word, and Ventura Publisher.
In the production of an index for a book [6], our Emacs Lisp
implementation of the index placing subsystem has proved very useful
and effective. The provision for multi-pair
<
key, pattern>
query-insert has been the most
time-saving operation in our experience.
With minor modifications, the same facility should work on
placing index commands for other formatting languages like
troff and Scribe. Adapting it to direct-manipulation environments is more
involved, but given proper editor programming power,
the basic principles discussed above should apply.